package com.sinog.front.feign.biz;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sinog.core.model.ReplyMessage;
import com.sinog.core.model.ReportInfo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @desc 安帮工作资源管理 - 上报协调信息管理 - 上报协调信息管理 - ReportInfoManageService - feign
 * @author -
 * @date -
 */
@FeignClient("sinog2c-biz")
public interface ReportInfoManageService {

    /**
     * 获取首页上报协调列表
     * @param departId departId
     * @param level level
     * @param account account
     * @return List<HashMap < String,Object>>
     */
    @GetMapping("basic/sysbxt")
    List<HashMap<String,Object>> getSySbxtList(
            @RequestParam("departId") String departId,
            @RequestParam("level") String level,@RequestParam("account") String account);

    /**
     * 安帮工作资源管理 - 上报协调信息管理 - 上报协调信息管理 - 列表
     * @param searchKey searchKey
     * @param sbStartDate sbStartDate
     * @param sbEndDate sbEndDate
     * @param sbdw sbdw
     * @param sbtype sbtype
     * @param tipFlag tipFlag
     * @param departId departId
     * @param pageIndex pageIndex
     * @param pageSize pageSize
     * @return Page<Map < String,String>>
     */
    @GetMapping("/azbj/reportInfoList")
    Page<Map<String,String>> getReportInfoList(
            @RequestParam("searchKey") String searchKey,
            @RequestParam("sbStartDate") String sbStartDate,
            @RequestParam("sbEndDate") String sbEndDate,
            @RequestParam("sbdw") String sbdw,
            @RequestParam("sbtype") String sbtype,
            @RequestParam("tipFlag") String tipFlag,
            @RequestParam("departId") String departId,
            @RequestParam("pageIndex") Integer pageIndex,@RequestParam("pageSize") Integer pageSize);

    /**
     * 安帮工作资源管理 - 上报协调信息管理 - 上报协调信息管理 - （新增/更新）
     * @param data data
     * @return boolean
     */
    @PostMapping("/azbj/reportInfoSave")
    boolean save(@RequestBody String data);

    /**
     * 安帮工作资源管理 - 上报协调信息管理 - 上报协调信息管理 - 回复
     * @param data data
     * @return int
     */
    @PostMapping("/azbj/replyInfoSave")
    int reply(@RequestBody String data);

    /**
     * 安帮工作资源管理 - 上报协调信息管理 - 上报协调信息管理 - 获取抄送机构需要的下拉框数据
     * @param departId departId
     * @return List<Map < String,Object>>
     */
    @PostMapping("/azbj/getDepartmentType")
    List<Map<String,Object>> getDepartmentType(@RequestParam("departId") String departId);

    /**
     * 安帮工作资源管理 - 上报协调信息管理 - 上报协调信息管理 - 查看时获取抄送机构需要的下拉框数据
     * @param departId departId
     * @return List<Map < String,Object>>
     */
    @PostMapping("/azbj/getDepartmentTypeInfo")
    List<Map<String,Object>> getDepartmentTypeInfo(@RequestParam("departId") String departId);

    /**
     * 安帮工作资源管理 - 上报协调信息管理 - 上报协调信息管理 - 发布上报协调信息
     * @param id id
     * @return int
     */
    @RequestMapping("/azbj/sbxtgl/reportInfo/report/{id}")
    int report(@PathVariable("id") String id);

    /**
     * 安帮工作资源管理 - 上报协调信息管理 - 上报协调信息管理 - 取消发布上报协调信息
     * @param id id
     * @return int
     */
    @RequestMapping("/azbj/sbxtgl/reportInfo/withdraw/{id}")
    int withdraw(@PathVariable("id") String id);

    /**
     * 安帮工作资源管理 - 上报协调信息管理 - 上报协调信息管理 - 修改查看状态
     * @param id id
     * @return int
     */
    @RequestMapping("/azbj/sbxtgl/reportInfo/changeState/{id}")
    int changeState(@PathVariable("id") String id);

    /**
     * 安帮工作资源管理 - 上报协调信息管理 - 上报协调信息管理 - 修改查看状态
     * @param id id
     * @return String
     */
    @RequestMapping("/azbj/sbxtgl/reportInfo/getUpdanweiById")
    String getUpdanweiById(@RequestParam("id") String id);

    /**
     * 安帮工作资源管理 - 上报协调信息管理 - 上报协调信息管理 - mongo 获取上报协调信息
     * @param id id
     * @return ReportInfo
     */
    @RequestMapping("/azbj/sbxtgl/reportInfo/findReportById")
    ReportInfo findReportById(@RequestParam("id") String id);

    /**
     * 安帮工作资源管理 - 上报协调信息管理 - 上报协调信息管理 - mongo 获取上报回复信息
     * @param id id
     * @return ReplyMessage
     */
    @RequestMapping("/azbj/sbxtgl/reportInfo/findMessgeById")
    ReplyMessage findMessgeById(@RequestParam("id") String id);
}